package cn.wolfcode.wolf2w.advice;


import cn.wolfcode.wolf2w.exception.LogicException;
import cn.wolfcode.wolf2w.util.JsonResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @ControolerAdvice controller功能增强注解
 *
 * 在请求进入映射方法前, 做功能增强 : 经典用法: Data类型参数格式化
 * 在请求进入映射方法后, 做功能增强 : 经典用法: 统一异常处理
 *
 */

@ControllerAdvice
public class CommonExceptionHandler {

    //记住：异常方法定义跟请求映射方法一样

    //指定能处理的异常 : 自定义异常
    @ExceptionHandler(LogicException.class)
    @ResponseBody
    public Object handlerExt(LogicException lx){

        lx.printStackTrace();

        return JsonResult.error(JsonResult.CODE_ERROR, lx.getMessage(), null);
    }

    //系统异常
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Object handlerDefualtExt(Exception ex){

        ex.printStackTrace();

        return JsonResult.defaultError();
    }
}
